<template>
  <view>
    <button @click="login" type="primary">微信登录</button>
  </view>
</template>

<script>
export default {
  onLoad () {
    this.getCode()
  },
  methods: {
    // 1. 获取用户登录凭证
    async getCode () {
      // 1. 获取微信用户登录凭证
      try {
        const codeData = await uni.login()
        // 把成功获取的用户登录凭证存到this上
        // 说明：没有在data定义，直接this.变量名存值，不是响应式
        this.code = codeData.code
      } catch (error) {
        console.log(error)
      }

    },
    // 登录
    async login () {
      /**
       * 微信登录流程：
       * 1. 页面加载后，首先调用uni.login方法，获取微信用户登录凭证
       * 2. 调用uni.getUserProfile方法，获取微信用户信息
       * 3. 调用后台api登录接口，传入获取微信用户信息进行登录
       * 4. 登录成功后获取token，持久化到本地
       */
      try {
        const { encryptedData, rawData, iv, signature } = await uni.getUserProfile({ desc: '获取微信用户信息登录' })
        // 2. 获取微信用户信息成功
        console.log('微信用户信息：', rawData)
        // 3. 调用后台接口登录
        const { msg, data } = await this.request({
          url: '/api/public/v1/users/wxlogin',
          method: 'post',
          data: {
            encryptedData, rawData, iv, signature,
            code: this.code
          }
        })
        console.log('登录：', msg, data)
        if (msg.status === 200) {
          uni.setStorageSync('ugo-token-150', data.token)
          uni.navigateBack()
        } else {
          uni.showToast({
            title: '登录失败！'
          })
        }

      } catch (error) {
        console.log(error)
      }


    }
  },
}
</script>

<style lang="scss" scoped>
button {
  width: 600rpx;
  margin: 200rpx auto 0;
}
</style>